RecyclerView 控件被推荐用来展示一组数量较多的或者数据频繁改变的数据集。
官方文档
Create a List with RecyclerView
添加依赖
打开 app module 中的 build.gradle,添加:
1 | dependencies { |
在布局文件中添加 RecyclerView
1 | <?xml version="1.0" encoding="utf-8"?> |
在主界面中使用 RecyclerView
这一步主要是添加布局管理器,以及为 RecyclerView 设置数据集。
设置数据集的方法是新建一个适配器,然后将数据传给适配器,并调用 RecyclerView 的 setAdapter 方法。
1 | public class MyActivity extends Activity { |
为列表添加一个适配器
适配器继承自 RecyclerView.Adapter,泛型指定为这个自定义适配器的内部类:MyAdapter.MyViewHolder。
用一个成员变量 myDataset 引用数据集,通过适配器的构造函数初始化。
MyViewHolder 继承自 RecyclerView.ViewHolder,在其中可以定义我们需要的控件引用。
onCreateViewHolder 这个方法被布局管理器(LaoutManager)调用,返回一个 MyViewHolder 对象。这个 MyViewHolder 的类型必须和 MyAdapter 中内部类的类型一致。
onBindViewHolder 将视图与对象位置的数据进行绑定。
R.layout.my_textview 是自定义布局,新建一个布局文件名字叫做:my_textview.xml,根据需要添加控件。
1 | public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>{ |
1 | <?xml version="1.0" encoding="utf-8"?> |
更新列表
直接修改数据集,然后调用适配器的 notifyDataSetChanged() 方法。
1 | myData[0] = "上传"; |
列表中元素的点击事件
参考的是:[RecyclerView onClick]
关键代码:
1 | private final OnClickListener mOnClickListener = new MyOnClickListener(); |
以及:
1 |
|
这两个方法是写在自定义适配器类中的,所以 MyAdapter 需要实现 View.OnClickListener 接口。
而在 onClick 方法中需要 RecyclerView 的引用,以及上下文对象,所以适配器的构造方法如下:
1 | public MyAdapter(String[] dataset, RecyclerView myRecyclerView, Context mcontext) { |
在 MainActivity 中这样创建适配器:
1 | myAdapter = new MyAdapter(myData, myRecyclerView, this); |